package com.yc.sole.framework.utils;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.yc.sole.framework.exception.BaseException;
import com.yc.sole.framework.result.IResultMsg;

import java.util.Collection;

/**
 * ==========================
 * 参数验证工具类
 *
 * @author yizuomin
 * @date 2021/11/28 20:37
 * ==========================
 **/
public class ValidateUtil {

    /**
     * 验证是否为空
     *
     * @param charSequence 验证参数
     * @param message      异常参数
     */
    public static void isBlank(Object charSequence, String message) {
        if (ObjectUtil.isEmpty(charSequence)) {
            throw new BaseException(message);
        }
    }

    /**
     * 验证是否为空
     *
     * @param charSequence 验证参数
     * @param message      异常参数
     */
    public static void isBlank(Object charSequence, IResultMsg message) {
        if (ObjectUtil.isEmpty(charSequence)) {
            throw new BaseException(message);
        }
    }

    /**
     * 验证参数是否为空
     *
     * @param o       验证参数
     * @param message 异常信息
     */
    public static void isNull(Object o, String message) {
        if (ObjectUtil.isNull(o)) {
            throw new BaseException(message);
        }
    }

    /**
     * 验证参数是否为空
     *
     * @param o       验证参数
     * @param message 异常信息
     */
    public static void isNull(Object o, IResultMsg message) {
        if (ObjectUtil.isNull(o)) {
            throw new BaseException(message);
        }
    }

    /**
     * 验证参数是否不为空
     *
     * @param o       验证参数
     * @param message 异常信息
     */
    public static void nonNull(Object o, IResultMsg message) {
        if (ObjectUtil.isNotNull(o)) {
            throw new BaseException(message);
        }
    }

    /**
     * 验证参数是否不为空
     *
     * @param o       验证参数
     * @param message 异常信息
     */
    public static void notEqual(Object o, Object s, IResultMsg message) {
        if (ObjectUtil.notEqual(o, s)) {
            throw new BaseException(message);
        }
    }

    /**
     * 验证参数是否不为空
     *
     * @param o       验证参数
     * @param message 异常信息
     */
    public static void equal(Object o, Object s, IResultMsg message) {
        if (ObjectUtil.equal(o, s)) {
            throw new BaseException(message);
        }
    }

    /**
     * 验证集合是否为空
     *
     * @param collection 集合
     * @param message    异常信息
     * @param <T>        t
     */
    public static <T> void isEmpty(Collection<T> collection, String message) {
        if (CollUtil.isEmpty(collection)) {
            throw new BaseException(message);
        }
    }

    /**
     * 验证集合是否为空
     *
     * @param collection 集合
     * @param message    异常信息
     * @param <T>        t
     */
    public static <T> void isEmpty(Collection<T> collection, IResultMsg message) {
        if (CollUtil.isEmpty(collection)) {
            throw new BaseException(message);
        }
    }

    /**
     * 验证是否不相等
     *
     * @param o
     * @param s
     * @param message
     */
    public static void notEqualsIgnoreCase(String o, String s, IResultMsg message) {
        if (!o.equalsIgnoreCase(s)) {
            throw new BaseException(message);
        }
    }

}
